[Visual Studio Mobile Center] SSL証明書要らず!プッシュ通知を試してみた
はじめに
こんにちは、加藤です。もうすぐ子供が1歳になるという現実に時の流れの速さを感じずにはいられない今日この頃です。
先日、久しぶりにVisual Studio Mobile Center(以下、VSMC)のコンソールを覗いてみたらプッシュ通知の項目が増えていることに気づきました。
ということでVSMCからiOSアプリへのプッシュ通知を試してみました。
VSMCってそもそも何?という方は以下の過去記事もあわせてご覧ください。
- Visual Studio Mobile CenterでiOSアプリをビルドしてみた
- Visual Studio Mobile CenterでiOSアプリを配布してみた
- Visual Studio Mobile Centerのクラッシュレポート機能をiOSアプリで試してみた
- Visual Studio Mobile Centerのアナリティクス機能をiOSアプリで試してみた
- [アップデート][Visual Studio Mobile Center] Organizationによってチームメンバー間でアプリを共有できるようになりました
VSMCは記事執筆時点でPreview版です。そのため、正式版リリース時には機能が異なる可能性がありますのでご注意ください。なお、Preview版の間は無料で利用できます。
事前準備
プッシュ通知の機能を使うので対象ターゲットのcapabilitiesでPush Notificationsを有効にしておきましょう。
また、プッシュ通知を有効にしたAppIDやプロビジョニングプロファイルは事前に作成しておきましょう。
VSMC側の設定
事前準備が出来たらVSMC上でプッシュ通知の設定を行います。 プッシュ通知の設定画面はVSMC上でアプリを選択し、「Push」の項目を選択することで表示されます。
この設定画面で以下を設定する必要があります。
- アプリのPrefixとID
- Key ID
- Authentication Token
- Push通知の環境(Production もしくは Sandbox)
以降、それぞれについて詳しく見ていきましょう。
アプリのPrefixとID
対象アプリのPrefixとIDです。これらの値はAppleデベロッパーポータルの「App IDs」で確認出来ます。
Key ID
Key IDはプッシュ通知用KeyのIDなのですが、まずはそのプッシュ通知用Keyを作成する必要があります。
KeyはAppleデベロッパーポータルの「Keys」から作成出来ます。
以下のように任意のKey Nameを入力し、Key ServicesでAPNsのチェックをつけてContinueをクリックします。
また、Authentication Tokenの設定で必要になるので、
Downloadボタンをクリックしてファイル(.p8)をダウンロードしておきましょう。
Authentication Token
Authentication TokenはKeyの作成時にダウンロードしたファイル(.p8)をテキストエディタ開けば確認出来ます。
Push通知の環境(Production もしくは Sandbox)
プッシュ通知の環境を選択します。 ビルドに使用する開発者証明書に合致する方を選びます。今回はSandboxを選びました。
上記項目を全て入力したらDoneをクリックします。これでVSMC上のプッシュ通知設定は完了です。
iOS側の実装
検証環境
以下の環境で検証を行っています。
- macOS Sierra バージョン 10.12.5
- Xcode Version 8.3.3 (8E3004b)
- iPhone 7実機
- Swift 3.1
プッシュ通知用モジュールの導入
Mobile Center SDKの一部であるプッシュ通知用モジュールを導入します。
CocoaPodsでサクッと導入しましょう。
Podfileにpod 'MobileCenter/Push'
と記載してpod install
します。
※記事執筆時点でのMobileCenter/Pushのバージョンは0.10.1
でした。
プッシュ通知サービスを開始
モジュールが導入できたら、AppDelegateのdidFinishLaunchingWithOptions
メソッドでプッシュのサービスを開始します。
また、プッシュ通知するための必須作業ではありませんが、MSMobileCenter.installId()
の部分でインストールIDを発行しています。
インストールIDとはMobile Center SDKが生成するデバイスを一意に識別するためのUUIDで、アプリをアップデートしても一度発行したUUIDは不変ですが、アプリを再インストールすると変わるというものです。
VSMCではこのインストールID単位でのプッシュ通知が出来ます。
今回この機能を試したかったのでインストールIDを発行し、UUIDを確認するためにprint
で出力しています。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // プッシュのサービスを有効化 MSMobileCenter.start("{Your App Secret}", withServices: [MSPush.self]) // インストールIDを発行 let installId = MSMobileCenter.installId()! print(installId) return true }
{Your App Secret}
の部分はご自身の環境に合わせて設定してください。
値は以下のようにアプリの設定画面で確認出来ます。
アプリを起動し、インストールIDを控えておく
コードが書けたらアプリを起動(これによりデバイスがプッシュ通知対象としてVSMCに登録される)し、インストールIDを控えておきましょう。
プッシュ通知してみる
実際にプッシュ通知してみましょう!
VSMCで「Send notification」をクリックすると通知内容を設定する画面が開くので以下を設定します。
- Campaign Name(必須):プッシュ通知結果をトラッキングするための名前。アプリのユーザーには表示されない。
- Title(任意):通知タイトル。アプリのユーザーに表示される。
- Message(必須):通知メッセージ。アプリのユーザーに表示される。
今回は以下のように設定しました。設定したらNextをクリックします。
プッシュ通知対象を設定する画面が開きます。以下の3種類があります。
- All registered devices:登録されているデバイス全て
- Custom device list:対象インストールIDのデバイス(最大20個指定可能)
- Audience:国やアプリのバージョンなどによるセグメント配信
今回はCustom device listでインストールIDを指定した配信を行ってみます。
インストールIDを指定したらNextをクリックします。
最後に通知内容の確認画面が表示されるので「Send notification」をクリックします。
プッシュ通知の送信結果はVSMC上で確認できます。こちらは一覧。
おわりに
VSMCからiOSアプリへのプッシュ通知を試してみました。アプリ毎にプッシュ通知のSSL証明書を用意する必要がなく、Key IDとAuthentication Tokenで通知が行えるので良いですね!
セグメント配信もぜひ試してみたいと思いました。
今回は以上です。